package com.citas.client.widget;


import com.citas.client.CitasConstants;
import com.citas.client.CitasMessages;
import com.citas.client.Getdata;
import com.citas.client.GetdataAsync;
import com.citas.shared.Encriptar;
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;

import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Cookies;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.user.client.ui.Label;

public class Login extends Composite {
	

	private static LoginUiBinder uiBinder = GWT.create(LoginUiBinder.class);
	@UiField DialogBox dialogoLogin;
	@UiField TextBox user;
	@UiField PasswordTextBox password;
	@UiField Button iniciarSesion;
	@UiField Label mensajes;
	
	CitasConstants var = GWT.create(CitasConstants.class);
	CitasMessages msn= GWT.create(CitasMessages.class);
	private final GetdataAsync consulta = GWT
			.create(Getdata.class);
	
	Usuario usuario=null;
	
	Command comando=null;
	
	public Login(Command co) {
		initWidget(uiBinder.createAndBindUi(this));
		comando=co;
		dialogoLogin.center();

		iniciarSesion.setText(var.iniciarSesion());
		dialogoLogin.setTitle(var.iniciarSesion());
	}
	
	public Usuario getUsuario(){
		if(usuario==null)
			usuario=new Usuario(this.comando);
		return usuario;
	}
	
	public void mostrar(){
		dialogoLogin.show();
	}
	
	interface LoginUiBinder extends UiBinder<Widget, Login> {
	}

	@UiHandler("iniciarSesion")
	void onIniciarSesionClick(ClickEvent event) {
		String pas=password.getText();
		String usr=user.getText();
		if(pas.length()==0 || usr.length()==0){
			
			Window.alert(msn.messajewithoutdata());
			return;
		}

		pas=Encriptar.encriptar(pas);
		consulta.consultar(usr, pas, new AsyncCallback<Integer>() {

			@Override
			public void onFailure(Throwable caught) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void onSuccess(Integer result) {
				// TODO Auto-generated method stub
				if(result.intValue()<0){
					Window.alert(msn.simboloDesconocido("incorrecto"));
				}
				else{
					Cookies.setCookie("idpersona",result.toString());
					dialogoLogin.hide();
					password.setText("");
					getUsuario().mostrar();
					
				}
			}

			
		});
	}
}
